package com.xr.core.system.service;

import com.xr.core.system.common.base.MyService;
import com.xr.core.system.entity.userModule.AdminMenuVO;
import com.xr.core.system.entity.userModule.AssociatedRoleDTO;
import com.xr.core.system.entity.userModule.PasswordDTO;
import com.xr.core.system.entity.userModule.User;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * 总后台用户表(User)表服务接口
 */
public interface UserService extends MyService<User> {

    /**
     * 修改当前登录人密码
     *
     * @param passwordDTO
     * @return
     */
    boolean setPassword(PasswordDTO passwordDTO);

    /**
     * 用户指定角色
     *
     * @param associatedRoleDTO
     * @return
     */
    boolean associatedRole(AssociatedRoleDTO associatedRoleDTO);

    /**
     * 启禁用账户
     *
     * @param accountId
     * @return
     */
    boolean disOrEnaAccount(Long accountId);

    /**
     * 获取当前登录人菜单
     *
     * @return
     */
    List<AdminMenuVO> getMenuList();

    /**
     * 新增数据
     *
     * @param user
     * @return
     */
    boolean insert(User user);

    /**
     * 修改数据
     *
     * @param user
     * @return
     */
    boolean update(User user);

    /**
     * 批量设置内置账户
     *
     * @param idList
     * @return
     */
    boolean setInitAccount(List<Long> idList);

    /**
     * 获取验证码
     *
     * @param response
     */
    void getVerification(HttpServletResponse response);

    /**
     * 通过userId 获取权限code
     *
     * @param id
     * @return
     */
    List<String> roleCodeByUserId(Long id);

}

